package com.ljh.localmusic.data.local

import android.net.Uri
import com.google.gson.TypeAdapter
import com.google.gson.stream.JsonReader
import com.google.gson.stream.JsonWriter

/**
 * author：LJH on 2025/9/18 11:48
 *
 */
class UriTypeAdapter : TypeAdapter<Uri>() {
    // 序列化：将 Uri 转为字符串（关键）
    override fun write(out: JsonWriter, value: Uri?) {
        if (value == null) {
            out.nullValue() // 处理 null 情况
        } else {
            out.value(value.toString()) // 必须转成字符串！
        }
    }

    // 反序列化：从字符串解析 Uri
    override fun read(`in`: JsonReader): Uri? {
        return try {
            val uriString = `in`.nextString() // 读取字符串
            if (uriString.isBlank()) null else Uri.parse(uriString)
        } catch (e: Exception) {
            null // 处理解析失败
        }
    }
}